perm filename ARITH.HDR[AL,HE] blob
sn#549887 filedate 1980-12-08 generic text, type T, neo UTF8
IFCR NOT DECLARATION(ARITHTERNAL) THENC DEFINE ARITHTERNAL="EXTERNAL"; ENDC
DEFINE VALU$ "<>" = <V3ECT,TRANS,SVAL,FRAME,ROTN>;
ARITHTERNAL RCLASS V3ECT(REAL X,Y,Z);
DEFINE V3ELT(V,I) "<>" = <MEMORY[LOCATION(V3ECT:X[V])-1+(I),REAL]>;
ARITHTERNAL RCLASS ROTN(REAL ARRAY RMX;RPTR(V3ECT) AXIS;REAL MAGN,αL,βL);
DEFINE RMXELT(RMX,I,J) "<>" = <RMX[J,I]>; ! because of the cretinous way
rotation matrix is stored.;
ARITHTERNAL RCLASS TRANS(RPTR(ROTN) R;RPTR(V3ECT) P);
ARITHTERNAL RCLASS SVAL(REAL VAL);
ARITHTERNAL RCLASS FRAME(RPTR(TRANS) VAL);
DEFINE DEG = "(180./π)";
ARITHTERNAL RPTR(SVAL) PI,RADIANS,CM,GM,LBS,TRUEV,FALSEV;
ARITHTERNAL RPTR(V3ECT) NILVECT,XHAT,YHAT,ZHAT; ! the axes;
ARITHTERNAL RPTR(V3ECT) NEGXHAT,NEGYHAT,NEGZHAT; ! negative axes;
ARITHTERNAL RPTR(ROTN) NILROTN;
ARITHTERNAL RPTR(TRANS) NILTRANS;
ARITHTERNAL RPTR(V3ECT) STAN_DEPROACH;
ARITHTERNAL RPTR(ROTN) ZFLIPR; ! ZFLIPR*ZHAT = - ZHAT;
ARITHTERNAL RPTR(TRANS) ZFLIPT; ! ZFLIPT*ZHAT = - ZHAT;
ARITHTERNAL RPTR(FRAME) STATION;
ARITHTERNAL RPTR(FRAME) YPARK,BPARK,GPARK,RPARK;
ARITHTERNAL RPTR(FRAME) NILDEPROACH;
IFCR NOT DECLARATION(NOARITH) THENC DEFINE NOARITH=FALSE; ENDC
IFCR NOT NOARITH THENC
EXTERNAL RPTR(SVAL) PROCEDURE NEW_SVAL(REAL VAL);
EXTERNAL RPTR(V3ECT) PROCEDURE NEW_V3ECT(REAL X,Y,Z);
EXTERNAL RPTR(TRANS) PROCEDURE NEW_TRANS(RPTR(ROTN) R;RPTR(V3ECT) P);
EXTERNAL RPTR(FRAME) PROCEDURE NEW_FRAME(RPTR(TRANS) T);
EXTERNAL RPTR(TRANS) PROCEDURE TRANS_COERCE(RPTR(TRANS,FRAME) TF);
EXTERNAL REAL SIMPLE PROCEDURE V3DOT(RPTR(V3ECT) V1,V2);
EXTERNAL REAL SIMPLE PROCEDURE V3DIST(RPTR(V3ECT) V1,V2);
EXTERNAL REAL SIMPLE PROCEDURE V3MAGN(RPTR(V3ECT) V);
EXTERNAL REAL PROCEDURE V3ANGLE(RPTR(V3ECT) V1,V2);
EXTERNAL REAL PROCEDURE GRFMUL(RPTR(V3ECT) G;RPTR(ROTN) R;RPTR(V3ECT) F);
EXTERNAL RPTR(SVAL) PROCEDURE RMAGN(RPTR(ROTN) R);
EXTERNAL RPTR(V3ECT) PROCEDURE AXIS(RPTR(ROTN) R);
EXTERNAL RPTR(V3ECT) PROCEDURE SVMUL(REAL SF;RPTR(V3ECT) V1);
EXTERNAL RPTR(V3ECT) PROCEDURE V3CROSS(RPTR(V3ECT) A,B);
EXTERNAL RPTR(V3ECT) PROCEDURE V3ADD(RPTR(V3ECT) V1,V2);
EXTERNAL RPTR(V3ECT) PROCEDURE V3SUB(RPTR(V3ECT) V1,V2);
EXTERNAL RPTR(V3ECT) PROCEDURE V3LINC(REAL W1;RPTR(V3ECT) V1;
REAL W2;RPTR(V3ECT) V2);
EXTERNAL RPTR(V3ECT) PROCEDURE V3COPY(RPTR(V3ECT) V,NV(NULL_RECORD));
EXTERNAL RPTR(V3ECT) PROCEDURE RVMUL(RPTR(ROTN) R;RPTR(V3ECT) V);
EXTERNAL RPTR(V3ECT) PROCEDURE RIVMUL(RPTR(ROTN) R;RPTR(V3ECT) V);
EXTERNAL RPTR(V3ECT) PROCEDURE TVMUL(RPTR(TRANS) T;RPTR(V3ECT) V);
EXTERNAL RPTR(V3ECT) PROCEDURE TIVMUL(RPTR(TRANS) T;RPTR(V3ECT) V);
EXTERNAL RPTR(V3ECT) PROCEDURE UVECT(RPTR(V3ECT) V;REAL SLOPOK(0.0));
EXTERNAL RPTR(V3ECT) PROCEDURE POS(RPTR(TRANS) T);
EXTERNAL RPTR(ROTN) PROCEDURE ORIENT(RPTR(TRANS) T);
EXTERNAL RPTR(ROTN) PROCEDURE AXW_ROTN(RPTR(V3ECT) AX;REAL W);
EXTERNAL RPTR(ROTN) PROCEDURE RINVRT(RPTR(ROTN) R);
EXTERNAL RPTR(ROTN) PROCEDURE αβW_ROTN(REAL αL,βL,W);
EXTERNAL RPTR(ROTN) PROCEDURE RMX_ROTN(REAL ARRAY RMXX);
EXTERNAL RPTR(ROTN) PROCEDURE RRMUL(RPTR(ROTN) R1,R2);
EXTERNAL RPTR(ROTN) PROCEDURE VTOV_R(RPTR(V3ECT) V1,V2;REAL SLOPOK(0.0));
EXTERNAL RPTR(ROTN) PROCEDURE VVROT(RPTR(V3ECT) X,Z);
EXTERNAL RPTR(TRANS) PROCEDURE TTMUL(RPTR(TRANS) T1,T2);
EXTERNAL RPTR(TRANS) PROCEDURE TINVRT(RPTR(TRANS) T);
EXTERNAL RPTR(TRANS) PROCEDURE VVVTRANS(RPTR(V3ECT) P,X,Z);
EXTERNAL RPTR(TRANS) PROCEDURE CONSTR(RPTR(V3ECT) P,X,XY);
EXTERNAL INTEGER PROCEDURE V3CMP(RPTR(V3ECT) V1,V2);
EXTERNAL INTEGER PROCEDURE ROTCMP(RPTR(ROTN) R1,R2);
EXTERNAL INTEGER PROCEDURE TRANSCMP(RPTR(TRANS) T1,T2);
REQUIRE "ARITH.REL[AL,HE]" LOAD_MODULE;
ENDC